// packages/react-reconciler/src/ReactFiberHooks

// function getBitLength(number: number): number {
//   return 32 - clz32(number);  // 返回一个数的二进制表示中从最高位到最低位第一个非零位的位置
// }

// function getLeadingBit(id: number) {
//   return 1 << (getBitLength(id) - 1);  // 返回一个数的二进制表示中最高位的值
// }
// let treeContextId: number = 1; //数字变量，用于存储树的上下文标识符
// let treeContextOverflow: string = '';  //字符串变量，用于存储树的上下文溢出信息
// let globalClientIdCounter: number = 0; //被用作生成唯一客户端ID的计数器

// export function getTreeId(): string {
//   const overflow = treeContextOverflow;
//   const idWithLeadingBit = treeContextId;
//   const id = idWithLeadingBit & ~getLeadingBit(idWithLeadingBit);
//   return id.toString(32) + overflow;
// }

// let isHydrating: boolean = false;

// function getIsHydrating(): boolean {
//   return isHydrating;
// }


// let workInProgressRoot: FiberRoot | null = null;

// export function getWorkInProgressRoot(): FiberRoot | null {
//   return workInProgressRoot;
// }

// function mountWorkInProgressHook(): Hook {
//   const hook: Hook = {
//     memoizedState: null, //指向最新状态值的指针。在组件渲染过程中，这个值会被更新和使用。
//     baseState: null, //指向初始状态值的指针。在组件的整个生命周期中，该值不会改变
//     baseQueue: null,//指向初始状态更新队列的指针。更新队列被用来存储组件状态的更新操作，以便在后续的渲染中进行处理。
//     queue: null,//指向当前状态更新队列的指针。在组件的渲染过程中，可能会有一系列的状态更新操作被添加到该队列中。
//     next: null,//指向下一个Hook对象的指针，即链表中的下一个节点。通过这种方式，React能够构建一个包含所有Hook对象的链表结构。
//   };
//   return hook
// }



// function mountId(): string {
//   const hook = mountWorkInProgressHook();
//    // 获取当前正在进行渲染的根Fiber节点
//   const root = ((getWorkInProgressRoot(): any): FiberRoot);
 
//   const identifierPrefix = root.identifierPrefix; //获取该 Fiber 树的标识前缀

//   let id;
// //   判断是否进行服务器渲染（ hydration 状态）
//   if (getIsHydrating()) {
//     const treeId = getTreeId();

//     id = ':' + identifierPrefix + 'R' + treeId;

//     const localId = localIdCounter++;
//     if (localId > 0) {
//       id += 'H' + localId.toString(32);
//     }

//     id += ':';
//   } else {
//     const globalClientId = globalClientIdCounter++;
//     id = ':' + identifierPrefix + 'r' + globalClientId.toString(32) + ':';
//   }

//   hook.memoizedState = id;
//   return id;
// }


//  useId(): string {
//       currentHookNameInDev = 'useId'; //用于开发环境中的调试变量，用于存储当前正在使用的 React Hook 的名称。
//       mountHookTypesDev(); //用于开发环境中的调试变量，用于存储 React Hook 的类型。
//       return mountId();
//     },
